package com.sinosun.autotestmachine.tools.parser;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.sinosun.autotestmachine.tools.TaskManager;
import com.sinosun.autotestmachine.tools.TestOs;

import android.util.Log;

/**
 * 文件解析器
 * @author HYW
 *
 */
public class FileContentParser {
	
	public static CaseInformation parser(String content, String taskId) {
		return parser(content, false, taskId);
	}
	
	public static CaseInformation parser(String content, boolean lastTag, String taskId) {
		try {
			JSONObject fileContentJsonData = new JSONObject(content);
			CaseInformation caseInformation;
			if (fileContentJsonData.has(ParamKey.CASE_ID)) {
				caseInformation = new CaseInformation();
				caseInformation.setCaseId(fileContentJsonData.getLong(ParamKey.CASE_ID));
			} else {
				return null;
			}
			
			if (fileContentJsonData.has(ParamKey.CASE_DECRIPTION)) {
				caseInformation.setCaseDecription(fileContentJsonData.getString(ParamKey.CASE_DECRIPTION));
			}
			
			if (fileContentJsonData.has(ParamKey.EXCUTE_COUNT)) {
				caseInformation.setExcuteCount(fileContentJsonData.getInt(ParamKey.EXCUTE_COUNT));
			}
			
			if (fileContentJsonData.has(ParamKey.TEST_PLATFORM)) {
				JSONArray testPlat = fileContentJsonData.getJSONArray(ParamKey.TEST_PLATFORM);
				boolean support = false;
				for (int i = 0; i < testPlat.length(); i++) {
					if (TestOs.OSOf(testPlat.getString(i)) == TestOs.ANDROID) {
						support = true;
						break;
					}
				}
				caseInformation.setTestPlatform(support);
			} else {
				return null;
			}
			
			if (fileContentJsonData.has(ParamKey.EXCUTE_COUNT)) {
				caseInformation.setExcuteCount(fileContentJsonData.getInt(ParamKey.EXCUTE_COUNT));
			}
			if (fileContentJsonData.has(ParamKey.CASE_CONTENT)) {
				caseInformation.setCaseContent(fileContentJsonData.getString(ParamKey.CASE_CONTENT));
			} else {
				return null;
			}
			caseInformation.setLastOneTag(lastTag);
			caseInformation.setTaskID(taskId);
			return caseInformation;
		} catch (JSONException e) {
			e.printStackTrace();
			return null;
		}
	}
}
